Skip to content

feat: Implement group pages feature with management and access controls with markdown support - #1721

Open
fayzetwin1 wants to merge 16 commits into
OpenVK:masterfrom
fayzetwin1:wiki-pages
Open

feat: Implement group pages feature with management and access controls with markdown support#1721
fayzetwin1 wants to merge 16 commits into
OpenVK:masterfrom
fayzetwin1:wiki-pages

Conversation

@fayzetwin1

Copy link
Copy Markdown
Contributor

НАСТОЯЩИЙ МАТЕРИАЛ (ИСХОДНЫЙ КОД) СОЗДАН И (ИЛИ) ОТРЕДАКТИРОВАН ПРИ УЧАСТИИ ИИ-АГЕНТА И (ИЛИ) КАСАЕТСЯ ДЕЯТЕЛЬНОСТИ ТАКОГО ИИ-АГЕНТА

Changelog:

  • group pages: added functionality for groups to create and manage additional pages, enhancing community engagement.
  • access control: introduced settings to enable or disable pages, with options for open or limited access based on user roles.
  • ui updates: updated templates to include new page management options and display main pages on group profiles.
  • localization: added new strings for materials and pages in both English and Russian.

Co-authored by @myslivets <3

image image image image image image

@fayzetwin1

Copy link
Copy Markdown
Contributor Author
image

@fayzetwin1

Copy link
Copy Markdown
Contributor Author

блять playwright объебался герычем

@fayzetwin1

Copy link
Copy Markdown
Contributor Author

ща

@fayzetwin1

fayzetwin1 commented Aug 2, 2026

Copy link
Copy Markdown
Contributor Author
image image

добавил таблицы еще

@crythoughts

crythoughts commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Имхо одной из проблем вк было наличие слишком большого количества сущностей, вот сущностей для длинных текстов как минимум три было.
И как я понял, функционал только для групп, но пользователи тоже могут хотеть такое
Так что лучше вшей это в заметки, и чтобы они были в группах, а интерфейс заметок как у вики страниц.
Но там по выбору сохранять ревизии или нет

@fayzetwin1

fayzetwin1 commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

сделал;
еще такой же туллбар на заметки добавил
image

image

@crythoughts

Copy link
Copy Markdown
Collaborator

Я так понимаю объединение с заметками сделано, но тогда модель викистраницы нужно удалить и вообще полностью объединить с заметками. Завтра гляну на локалхосте

Comment thread tests/docker-compose.override.yml Outdated
Comment thread tests/entrypoint.sh
Comment thread Web/Models/Entities/Note.php Outdated
Comment thread Web/Models/Entities/GroupPage.php Outdated
Comment thread install/sqls/00064-group-pages.sql Outdated
Comment thread install/sqls/00065-notes-as-wiki.sql Outdated
@crythoughts

Copy link
Copy Markdown
Collaborator

Вообще норм, но пару замечаний душных (можно не реализовывать кроме первого и пятого):

  • Вебпейджи уже не имеют смысла и их миграцию можно удалить, и из самой новой миграции тоже удалить их упоминания. ALTER TABLE 'groups' ADD COLUMN 'pages' TINYINT(1) NOT NULL DEFAULT 0 AFTER 'everyone_can_upload_audios'; тоже нужно перенести в основную миграцию
  • В редакторе есть вставка изображений. В вк там было специальное правило которое превращало id фото в фотографию и открывашку для неё. И добавлялось это пикером. Но такой тег делать проблематично будет, он ни в каком стандарте не существует и сам пикер отвратно написан, можно конечно ссылку на фото вставлять но cdnки постоянно переезжают
  • Заметки писать никто не хочет потому что отступы нужно делать вручную, через
    (<br>). Поэтому нужен выбор между редактированием в html (это старые заметки) и редактированием в markdown, ну мб оба формата можно будет выбрать. Какой-нибудь колонкой note_type. Если note_type 0 то как рендерится html, если note_type 1 то как markdown, и это можно самому выбирать, но по умолчанию 1.
  • Предпросмотра у редактирования почему-то нет, но его и раньше не было. Но имхо он должен открываться не в окне а на той же странице
  • А, я понял, заметки в группе и у пользователя тут разные. Нужно унифицировать как для пользователя так и для группы. PagesPresenter объединить с NotesPresenter
image
  • Это можно унифицировать с /notes/prerender
image
  • Нет отступа
image
  • "сохранить страницу" не должно сразу сабмитать форму, сначала preventDefault и проверка на то пусто ли название, потому что легко проебать этот момент
  • Иногда при нажатии на "Preview" нельзя из этого выйти, оно по новой показывает превью
  • История хорошо сделана, но можно ли этим засрать базу данных..
  • "Редактировать страницу группы" я помню что в вк оно было под авой, но для более простого доступа эта ссылка пусть будет под аватаркой и под настройкой материалов в группе.
  • Тут тоже нужно унифицировать заметки группы и пользователя, нужна ещё настройка "кто может комментировать" и у заметок в группе тоже комментарии
image

@crythoughts

Copy link
Copy Markdown
Collaborator

Имел в виду паддинг от заголовка, но так сойдёт

Здесь нужен внутренний отступ для низа страницы по горизонтали на уровне вкладок
image

Оповещение, что нет названия - вместо alert лучше fastError использовать

Больше не вижу к чему придраться

@crythoughts crythoughts left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а ещё:

поведение кнопки "вставить фото" верни как было

и ещё миграцию 66 нужно объединить с миграцией 65

@fayzetwin1
fayzetwin1 requested a review from WerySkok August 14, 2026 11:07

@veselcraft veselcraft left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image Image

Comment thread locales/en.strings
Comment on lines +1564 to +1567
"page_tab_view" = "View";
"page_tab_edit" = "Edit";
"page_tab_history" = "History";
"page_preview" = "Preview";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

многое из "новых" строк уже есть в локали, переиспользуй старые

Comment on lines -21 to -24
await expect(page.locator('.page_body')).toHaveScreenshot('note-create.png', {
maxDiffPixels: 200,
mask: [page.locator('.monaco-editor .scrollbar')],
});

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

а зачем в алгоритмы тесты лезть было? то, что динамически меняется, на скриншотах должно быть замазано фиолетовым

Comment on lines +8 to +10
use openvk\Web\Models\Entities\{Note, NoteRevision, User, Club};
use Nette\Database\Table\ActiveRow;
use Nette\Database\Table\Selection;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

прослеживается очень интересная логика: Entities мы объединим в квадратные скобочки, но вот на Table мы забьём огроменный жирный хуй

Comment on lines +96 to +99
return sizeof($this->table()->where([
"owner" => -$club->getId(),
"deleted" => 0,
]));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sizeof менять на ->count('*') ВЕЗДЕ. пусть количество подсчитывает mysql сервер, а не php

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants